package com.yu.callalbe;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class Demo01{

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        int a =1;
        FutureTask<Integer> futureTask = new FutureTask(()->{
            System.out.println(Thread.currentThread().getName() + "子线程任务");
            return 3;
        });//这是lombda表达式的写法
//        FutureTask<Integer> futureTask = new FutureTask(new Callable() {  这是正常写法，里面是一个callable接口
//            @Override
//            public Object call() throws Exception {
//                return 3;
//            }
//        });
        System.out.println("主线程工作");
        new Thread(futureTask).start();//这里可以用线程池，不用新起一个线程
        Integer integer = futureTask.get(); //如果上面线程没执行完这个，没收到结果就会一直等待
        System.out.println(a + integer);

    }
}


